Przykad 6.5. Zoptymalizowany algorytm Dijkstry dla grafw gstych
/**
 * Dla zadanej tablicy int[][] wag krawdzi w postaci surowej oblicz
 * najkrtsz odlego (dist) do wszystkich wierzchokw grafu i dla
 * wszystkich wierzchokw zapisz dowizania do poprzednikw (pred),
 * aby mona byo odtworzy te cieki. Waga INF krawdzi oznacza brak
 * krawdzi. Wersja nadajca si tylko do grafw gstych.
void singleSourceShortestDense (int n, int ** const weight, int s,  /* we */
                                int *dist, int *pred) {             /* wy */
   // Zainicjuj tablice dist[] i pred[]. Zacznij od wierzchoka s,
   // ustawiajc dist[] na 0. aden wierzchoek nie jest odwiedzony.
   bool *visited = new bool[n];
   for (int v = 0; v < n; v++) {
      dist[v] = numeric_limits<int>::max();
      pred[v] = -1;
      visited[v] = false;
   }
   dist[s] = 0;

   // Znajd najkrtsz odlego z s do wszystkich nie odwiedzonych
   // wierzchokw. Wylicz nowe potencjalne cieki, aby uaktualni
   // wszystkie najkrtsze cieki. Wyjd, jeli w u zostaje -1.
   while (true) {
      int u = -1;
      int sd = numeric_limits<int>::max();
      for (int i = 0; i < n; i++) {
         if (!visited[i] && dist[i] < sd) { 
            sd = dist[i];
            u = i;
         }
      }
      if (u == -1) { break; }

      // Dla ssiadw u sprawd, czy dugo najlepszej cieki z s->u +
      // waga krawdzi u->v jest lepsza ni najlepsza cieka z s->v.
      // Obliczaj, uywajc liczb typu long.
      visited[u] = true;
      for (int v = 0; v < n; v++) {
         int w = weight[u][v];
         if (v == u) continue;

         long newLen = dist[u];
         newLen += w;
         if (newLen < dist[v]) {
            dist[v] = newLen;
            pred[v] = u;
         }
      }
   }
   delete [] visited;
}
